package com.cskaoyan.javase.oop2._1extends._3protected._2two;

import com.cskaoyan.javase.oop2._1extends._3protected._1one.CurrentClazz;
import com.cskaoyan.javase.oop2._1extends._3protected._1one.SamePackageSonClazz;

/**
 * @description: 不同包下的子类
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * protected访问权限在不同包下的子类中是可以访问的
 * 但是访问的方式要明确,在不同包子类中有以下方式访问父类中的protected成员:
 *      1.创建父类对象,然后用父类对象名去访问protected成员
 *          这是不行的
 *      2.创建子类对象,然后用子类对象名去访问从父类中继承过来的protected成员
 *          这是可以的
 *      3.创建"兄弟姐妹"类对象,然后用它们的对象名访问它们继承父类的protected成员
 *          这是不行的
 *
 * 以上总结,在不同包的子类中,子类必须创建子类自身对象,然后通过自身对象才能访问从父类中继承过来的protected成员
 *
 */
public class AnotherPackageSonClazz extends CurrentClazz {
    public static void main(String[] args) {
        //1.创建父类对象,然后用父类对象名去访问protected成员
        CurrentClazz cc = new CurrentClazz();
        //'protectedVar' has protected access in 'com.cskaoyan.javase.oop2._1extends._3protected._1one.CurrentClazz'
        //cc.protectedVar;

        //2.创建子类对象,然后用子类对象名去访问从父类中继承过来的protected成员
        AnotherPackageSonClazz apsc = new AnotherPackageSonClazz();
        System.out.println(apsc.protectedVar);

        //3.创建"兄弟姐妹"类对象,然后用它们的对象名访问它们继承父类的protected成员
        SamePackageSonClazz spsc = new SamePackageSonClazz();
        //spsc.protectedVar;

    }
}
